Designing integrated circuits is a complicated and time consuming task. Before an integrated circuit is manufactured many different design and validation processes for the integrated circuit occur. For example, in general, designing an integrated circuits begins with defining design specifications, implementing the design electronically using a high level programming language (e.g., VHDL or other hardware description language), and simulating the design to determine functional difficulties.
Once the integrated circuit is implemented and simulated, a design for the integrated circuit is created. The design is essentially a schematic of the integrated circuit. The design describes a detailed layout and positioning of metal geometries within and between layers of the integrated circuit. Generating the design is a very intensive and time-consuming effort and is generally performed using computer aided design (CAD) tools and/or electronic design automation (EDA) tools.
Additionally, from the design different checks/validations can be performed that ensure proper manufacturing. For example, design rule checks (DRCs) are a set of design rules that ensure a lower probability of fabrication defects. The DRCs specify different constraints such as a minimum spacing between metal geometries and different acceptable metal geometries that avoid the fabrication defects. Correcting the DRCs often includes manually manipulating the design to change metal geometries for identified violations. However, because EDA tools do not prevent violations of the design rules from being generated, a design often includes thousands of violations that must be corrected. Accordingly, checking for DRC violations and manipulating a design to correct the DRC violations can be a time consuming process.